home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / sip_detection.nasl < prev    next >
Text File  |  2005-03-31  |  3KB  |  121 lines

  1. #
  2. # This script was written by Noam Rathaus
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(11963);
  10.  script_version("$Revision: 1.4 $");
  11.  name["english"] = "Detect SIP Compatible Hosts";
  12.  script_name(english:name["english"]);
  13.  
  14.  desc["english"] = "
  15. The remote host is running SIP (Session Initiation Protocol), a protocol
  16. used for Internet conferencing and telephony.
  17.  
  18. For more information about this protocol, visit http://www.cs.columbia.edu/sip/
  19. ";
  20.  
  21.  
  22.  script_description(english:desc["english"]);
  23.  
  24.  summary["english"] = "SIP Detection";
  25.  script_summary(english:summary["english"]);
  26.  
  27.  script_category(ACT_GATHER_INFO);
  28.  
  29.  script_copyright(english:"This script is Copyright (C) 2003 Noam Rathaus");
  30.  script_family(english:"Service detection");
  31.  script_require_ports(5060);
  32.  exit(0);
  33. }
  34.  
  35. include("dump.inc");
  36. include("global_settings.inc");
  37. include("misc_func.inc");
  38. debug = debug_level;
  39.  
  40. if(islocalhost())exit(0);
  41.  
  42. myaddr = this_host();
  43. dstaddr = get_host_ip();
  44. returnport = rand() % 65535;
  45.  
  46. if (debug)
  47. {
  48.  display("returnport: ", returnport, "\n");
  49. }
  50.  
  51. mystring = string("OPTIONS sip:", get_host_name(), " SIP/2.0\r\nVia: SIP/2.0/UDP ", myaddr, ":", returnport, "\r\nFrom: Test <sip:", myaddr, ":", returnport, ">\r\nTo: <sip:", myaddr, ":", returnport, ">\r\nCall-ID: 12312312@", myaddr, "\r\nCSeq: 1 OPTIONS\r\nMax-Forwards: 70\r\n\r\n");
  52.  
  53. if (debug)
  54. {
  55.  display("mystring: ", mystring, "\n");
  56. }
  57.  
  58. len = strlen(mystring);
  59.  
  60. ippkt = forge_ip_packet(ip_hl   :5,
  61.                         ip_v    :4,
  62.                         ip_tos  :0,
  63.                         ip_len  :20,
  64.                         ip_id   :31337,
  65.                         ip_off  :0,
  66.                         ip_ttl  :64,
  67.                         ip_p    :IPPROTO_UDP,
  68.                         ip_src  :myaddr);
  69.  
  70. udppacket = forge_udp_packet(ip      :ippkt,
  71.                              uh_sport:returnport,
  72.                              uh_dport:5060,
  73.                              uh_ulen :8 + len,
  74.                              data    :mystring);
  75.  
  76. filter = string("udp and src " , dstaddr , " and dst port ", returnport);
  77. rpkt = send_packet(udppacket, pcap_active:TRUE, pcap_filter:filter, pcap_timeout:1);
  78. if(rpkt)
  79. {
  80.  if (debug)
  81.  {
  82.   display("return packet\n");
  83.  }
  84.  
  85.  data = get_udp_element(udp:rpkt, element:"data");
  86.  
  87.  if (debug)
  88.  {
  89.   display("data: ", data, "\n");
  90.  }
  91.  
  92.  if ("SIP/2.0 " >< data)
  93.  {
  94.   if (egrep(pattern: '^Server:', string: data))
  95.   {
  96.    banner = egrep(pattern: '^Server:', string: data);
  97.    banner -= "Server: ";
  98.    banner -= string("\r\n");
  99.    if (debug)
  100.    {
  101.     display("banner: ", banner, "\n");
  102.    }
  103.  
  104.    if(!get_kb_item("sip/banner/5060"))
  105.    {
  106.     set_kb_item(name:"sip/banner/5060", value:banner);
  107.    }
  108.   }
  109.  
  110. report = "The remote host is running SIP (Session Initiation Protocol), a protocol
  111. used for Internet conferencing and telephony.
  112.  
  113. The banner of the remote service is : " + banner + "
  114.  
  115. For more information about this protocol, visit http://www.cs.columbia.edu/sip/";
  116.   security_note(port:5060, protocol:"udp", data:report);
  117.   register_service(port: 5060, ipproto: "udp", proto: "sip");
  118.  }
  119. }
  120.  
  121.